 /**
 * @file StartIO.c
 * @author liqiang (liqiang@hacint.com.cn)
 * @brief 
 * @version 1.0.0
 * @date 2023-08-17
 * 
 * 
 */
#include "StartIO.h" 
 


//通道选    端口选    板选   箱选

void StartIO_Init(void)        ;
void StartChannelIO_Init(void)     ;
void StartPortIO_Init(void)     ;
void StartCardIO_Init(void)     ;
void StartBoxIO_Init(void)    ;


void Plat_Start_Pin_IO_Init(void)
{ 
    StartIO_Init();
}


//起始针io初始化
void StartIO_Init(void)
{
	//起始针箱选io初始化
	StartBoxIO_Init();
	
	//起始针子卡io初始化
	StartCardIO_Init ();
	
	//起始针端口io初始化
	StartPortIO_Init ();
	
	//起始针通道io初始化
	StartChannelIO_Init();
}






/** start  box select起始段箱选16选1 选择是哪个箱子
 * 
MS_A10
MS_A11
MS_A12
MS_A13
*/
void StartBoxIO_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;//定义引脚类型结构体变量
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;//输出,推挽模式  
    GPIO_Initure.Pull=GPIO_PULLUP;//上拉电阻（高电平）          
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;//高速
	
	//初始化引脚MS_A10
    MS_A10_RCC_ENABLE(); //时钟使能
    GPIO_Initure.Pin=MS_A10_PIN	 ;//引脚
    HAL_GPIO_Init(MS_A10_PORT,&GPIO_Initure);//GPIO初始化

	//初始化引脚MS_A11
    MS_A11_RCC_ENABLE();  
    GPIO_Initure.Pin=MS_A11_PIN	 ;  
    HAL_GPIO_Init(MS_A11_PORT,&GPIO_Initure);
	
	//初始化引脚MS_A12
    MS_A12_RCC_ENABLE();  
    GPIO_Initure.Pin=MS_A12_PIN	;  
    HAL_GPIO_Init(MS_A12_PORT,&GPIO_Initure);
	
	//初始化引脚MS_A13
    MS_A13_RCC_ENABLE();  
    GPIO_Initure.Pin=MS_A13_PIN	;  
    HAL_GPIO_Init(MS_A13_PORT,&GPIO_Initure);

    //将所有引脚设置为低电平
    HAL_GPIO_WritePin(MS_A10_PORT,MS_A10_PIN ,GPIO_PIN_RESET);	
    HAL_GPIO_WritePin(MS_A11_PORT,MS_A11_PIN,GPIO_PIN_RESET);		
    HAL_GPIO_WritePin(MS_A12_PORT,MS_A12_PIN,GPIO_PIN_RESET);		
    HAL_GPIO_WritePin(MS_A13_PORT,MS_A13_PIN,GPIO_PIN_RESET);		

}





/*
MS_A7
MS_A8
MS_A9

*/
/** start  card  select起始段板选 选择是哪个子卡，子版
 * 
*/
void StartCardIO_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  
    GPIO_Initure.Pull=GPIO_PULLUP;          
    GPIO_Initure.Speed=GPIO_SPEED_HIGH; 

    MS_A7_RCC_ENABLE();  
    GPIO_Initure.Pin=MS_A7_PIN	 ;  
    HAL_GPIO_Init(MS_A7_PORT,&GPIO_Initure);

    MS_A8_RCC_ENABLE();  
    GPIO_Initure.Pin=MS_A8_PIN	 ;  
    HAL_GPIO_Init(MS_A8_PORT,&GPIO_Initure);

    MS_A9_RCC_ENABLE();  
    GPIO_Initure.Pin=MS_A9_PIN	;  
    HAL_GPIO_Init(MS_A9_PORT,&GPIO_Initure);


    HAL_GPIO_WritePin(MS_A7_PORT,MS_A7_PIN ,GPIO_PIN_RESET);		//MS_A7_PIN
    HAL_GPIO_WritePin(MS_A7_PORT,MS_A8_PIN,GPIO_PIN_RESET);		//MS_A8_PIN
    HAL_GPIO_WritePin(MS_A7_PORT,MS_A9_PIN,GPIO_PIN_RESET);		//MS_A9_PIN
    
}

 


/**
//MS_A
//MS_B 
//MS_C
*start   channel select 端口选择  起始段选哪个4067*/
void StartPortIO_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;

    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  	
    GPIO_Initure.Pull=GPIO_PULLUP;          	
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;  	


    MS_A_RCC_ENABLE();     
    GPIO_Initure.Pin=MS_A_PIN;  
    HAL_GPIO_Init(MS_A_PORT,&GPIO_Initure);	

    MS_B_RCC_ENABLE();     
    GPIO_Initure.Pin=MS_B_PIN;  
    HAL_GPIO_Init(MS_B_PORT,&GPIO_Initure);	

    MS_C_RCC_ENABLE();     
    GPIO_Initure.Pin=MS_C_PIN;  
    HAL_GPIO_Init(MS_C_PORT,&GPIO_Initure);

  	
	
    HAL_GPIO_WritePin(MS_A_PORT,MS_A_PIN,GPIO_PIN_RESET);	//MS_A
    HAL_GPIO_WritePin(MS_B_PORT,MS_B_PIN,GPIO_PIN_RESET);	//MS_B
    HAL_GPIO_WritePin(MS_B_PORT,MS_C_PIN,GPIO_PIN_RESET);	//MS_C

}


 
/*
MS_A0
MS_A1
MS_A2
MS_A3
*/

/**
 * @brief  select 4067通道选择

 * 
 */

void StartChannelIO_Init(void)
{
    GPIO_InitTypeDef GPIO_Initure;	
	
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  	
    GPIO_Initure.Pull=GPIO_PULLUP;          	
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;  	
	
    MS_A0_RCC_ENABLE();     
    GPIO_Initure.Pin=MS_A0_PIN;  
	HAL_GPIO_Init(MS_A0_PORT,&GPIO_Initure);

    MS_A1_RCC_ENABLE();     
    GPIO_Initure.Pin=MS_A1_PIN;  
    HAL_GPIO_Init(MS_A1_PORT,&GPIO_Initure);

    MS_A2_RCC_ENABLE();     
    GPIO_Initure.Pin=MS_A2_PIN;  
    HAL_GPIO_Init(MS_A2_PORT,&GPIO_Initure);

    MS_A3_RCC_ENABLE();     
    GPIO_Initure.Pin=MS_A3_PIN;  
    HAL_GPIO_Init(MS_A3_PORT,&GPIO_Initure);
	
    HAL_GPIO_WritePin(MS_A0_PORT,MS_A0_PIN,GPIO_PIN_RESET);	//MS_A0
    HAL_GPIO_WritePin(MS_A1_PORT,MS_A1_PIN,GPIO_PIN_RESET);	//MS_A1
    HAL_GPIO_WritePin(MS_A2_PORT,MS_A2_PIN,GPIO_PIN_RESET);	//MS_A2
    HAL_GPIO_WritePin(MS_A3_PORT,MS_A3_PIN,GPIO_PIN_RESET);	//MS_A3
}

